Programmierung von CAx-Systemen

CAx-Programmierung – D. Straub

Versionsverwaltung mit Git

Selbststudium – Nachschlagematerial zum eigenständigen Durcharbeiten

David Straub

CAx-Programmierung – D. Straub

Wozu dieses Dokument?

Git brauchen Sie ab Woche 1, um Ihr Projekt zu pushen. Die Vorlesung führt nur den nötigen Kern ein (addcommitpush).

Dieses Dokument ist zum Nachschlagen und selbst Üben – vom ersten Repository bis zu Branches und Pull Requests. Arbeiten Sie es in Ihrem Tempo durch; bei Problemen vor Woche 2 melden.

CAx-Programmierung – D. Straub

Warum Versionsverwaltung?

CAx-Programmierung – D. Straub

Das Problem ohne Git

grundplatte_final.py
grundplatte_final2.py
grundplatte_neu.py
grundplatte_neu_v3_STIMMT.py

Typische Fragen ohne Versionsverwaltung:

  • Wie war der Code letzte Woche?
  • Warum baut das Modell seit gestern anders?
  • Welchen Stand habe ich abgegeben?
  • Was genau habe ich seit dem letzten Mal geändert?
CAx-Programmierung – D. Straub

Was Versionsverwaltung löst

Situation Ohne Git Mit Git
Etwas geändert Datei überschrieben git diff zeigt genau was
Idee ausprobieren Kopie anlegen Branch erstellen
Fehler eingebaut Manuell rückgängig git revert
Abgabe festhalten Ordner zippen Commit + Push
CAx-Programmierung – D. Straub

Git-Grundkonzepte

CAx-Programmierung – D. Straub

Die vier Orte

  • Working Directory – Ihr Projektordner, wie er gerade auf der Platte liegt
  • Staging Area – was in den nächsten Commit soll (git add)
  • Repository – die lokale Historie aller Commits (git commit)
  • Remote – der Server, auf dem ich Ihren Stand sehe (git push)
CAx-Programmierung – D. Straub

Repository, Commit, History

Repository = Projektordner mit vollständiger Versionshistorie

Commit = Snapshot des Projekts zu einem Zeitpunkt, mit Nachricht

* b3f92a1  Vier Befestigungslöcher ergänzt
* 7e4d5db  Grundplatte verrundet
* 704671c  Erste Version der Grundplatte

Jeder Commit hat: Zeitstempel, Autor, Nachricht, eindeutigen Hash.

CAx-Programmierung – D. Straub

Was gehört ins Repository?

Ja:

  • Ihr Code (.py)
  • Konfigurationsdateien (.gitlab-ci.yml, requirements.txt)
  • Dokumentation (.md)

Nein:

  • Generierte Dateien – groß, aus Code rekonstruierbar (.step, .stl)
  • Virtuelle Umgebungen (cax-env/, __pycache__/)
  • IDE-Dateien (.vscode/)

→ eine .gitignore regelt, was Git ignoriert.

CAx-Programmierung – D. Straub

Grundbefehle

CAx-Programmierung – D. Straub

Git konfigurieren

Einmalig nach der Installation – wird in jeden Commit geschrieben:

git config --global user.name "Vorname Nachname"
git config --global user.email "email@hm.edu"

Editor für Commit-Nachrichten:

git config --global core.editor "code --wait"

--wait sorgt dafür, dass Git wartet, bis das VS-Code-Fenster geschlossen ist.

CAx-Programmierung – D. Straub

Die tägliche Grundschleife

git status                      # Was hat sich geändert?
git add w01/                    # Änderungen zum nächsten Commit vormerken
git commit -m "Modul-Grundplatte"   # Snapshot mit Nachricht
git push                        # auf den Server hochladen

Weitere nützliche Befehle:

git log --oneline               # History ansehen
git diff                        # noch nicht gestagte Änderungen
git pull                        # Referenzlösung / Serverstand holen
CAx-Programmierung – D. Straub

Gute Commit-Nachrichten

# Wenig hilfreich:
git commit -m "fix"
git commit -m "änderung"

# Gut – beschreibt, was der Commit bewirkt:
git commit -m "Vier Befestigungslöcher ergänzt"
git commit -m "Zellstapel parametrisch gemacht"
git commit -m "Kollisionstest für Nachbarzellen ergänzt"

Faustregel: „Wenn angewendet, wird dieser Commit [Nachricht]" muss einen sinnvollen Satz ergeben. (Viele Teams schreiben Commit-Nachrichten auf Englisch – im Kurs genügt Deutsch.)

CAx-Programmierung – D. Straub

Branches

CAx-Programmierung – D. Straub

Branch = parallele Entwicklungslinie

git branch                      # alle Branches anzeigen
git checkout -b variante-hoch   # neuen Branch erstellen und wechseln
git checkout main               # zurück zum Hauptbranch
git merge variante-hoch         # Branch zusammenführen

CAx-Programmierung – D. Straub

Wann Branches?

  • Variante ausprobieren, ohne main zu destabilisieren (z. B. eine schmalere Endplatte)
  • Experiment, das vielleicht verworfen wird
  • Parallele Entwürfe, die dauerhaft nebeneinander bestehen
git checkout -b endplatte-leicht

# Entwickeln, testen, committen
git add w09/
git commit -m "Endplatte mit Erleichterungstaschen"

# Zurück – der alte Stand ist unverändert
git checkout main
CAx-Programmierung – D. Straub

Remote: GitHub / GitLab

CAx-Programmierung – D. Straub

Remote-Repository

git clone <url>                 # Repository erstmalig holen
git push                        # Commits hochladen
git pull                        # Änderungen herunterladen

Im Kurs bekommen Sie ein fertiges Projekt-Repository – Sie clonen es einmal und arbeiten dann lokal, mit push am Ende jeder Sitzung.

GitLab (Kurs) / GitHub = Remote-Repository + Kollaborationsplattform mit Weboberfläche, Pipelines und Reviews.

CAx-Programmierung – D. Straub

Pull Request / Merge Request

Merge Request (GitLab) / Pull Request (GitHub) = Anfrage, einen Branch in main zu mergen – mit Review.

Vorteile: Änderungen werden begründet, eine zweite Person prüft, die History bleibt nachvollziehbar. Im Berufsalltag ist das der Normalweg, wie Code in main gelangt.

CAx-Programmierung – D. Straub

MR-Workflow in der Praxis

# 1. Branch für die Aufgabe
git checkout -b kuehlkanal

# 2. Entwickeln und committen
git add w06/
git commit -m "Serpentinen-Kanal in die Cold Plate geschnitten"

# 3. Hochladen
git push -u origin kuehlkanal

# 4. In GitLab: Merge Request öffnen
#    → Beschreibung: was, warum, wie geprüft
#    → nach Review: Merge in main
CAx-Programmierung – D. Straub

Zusammenfassung

CAx-Programmierung – D. Straub

Kernkonzepte

Repository & Commits

  • git addgit commitgit push – die Grundschleife jeder Sitzung
  • Commit-Nachrichten beschreiben, was der Commit bewirkt

Branches

  • parallele Entwicklung ohne Dateikopien
  • mergen wenn stabil, behalten wenn dauerhafte Variante

GitLab

  • Remote = Backup + Kollaboration + Pipeline
  • Merge Request: strukturierter Review, nachvollziehbare Entscheidungen
CAx-Programmierung – D. Straub

Zum Weiterlernen

CAx-Programmierung – D. Straub